在VC++中this->的用法?为什么很多时候要加this->呢?

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:01:22

this指针是一个隐含于每一个成员函数中的特殊指针。它是一个指向正在被该成员函数操作的对象,也就是要操作该成员函数的对象。

当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含作用this指针。而通常不去显式地使用this指针来引用数据成员。同样也可以使用*this来标识调用该成员函数的对象。下面举一例子说明this指针的应用。

#include <iostream.h>
class A
{
public:
A() { a=b=0; }
A(int a, int b) { this.a=a; this.b=b; }
void copy(A &aa); //对象引用作函数参数
void print() {cout<<a<<","<<b<<endl; }
private:
int a, b;
};

void A::copy(A &aa)
{
if (this == &aa) return; //这个this是操作该成员函数的对象的地址,在这里是对象a1的地址
*this = aa; //*this是操作该成员函数的对象,在这里是对象a1。
//此语句是对象aa赋给a1,也就是aa具有的数据成员的值赋给a1的数据成员
}

void main()
{
A a1, a2(3, 4);
a1.copy(a2);
a1.print();
}

运行结果:

3, 4

this指针是一个隐含于每一个成员函数中的特殊指针。它是一个指向正在被该成员函数操作的对象,也就是要操作该成员函数的对象。

当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含作用this指针。而通常不去显式地使用this指针来引用数据